package exo2;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public abstract class Hk extends Frame
{
    static final int WIDTH = 1200;       // taille initiale de la frame
    static final int HEIGHT = 800;
    protected int profondeur;

    /**
     * Creation de Ck.
     * @param prof nombre d'it�rations
     */
    public Hk (int prof)
    {
        this.setSize(WIDTH, HEIGHT);
        this.setVisible(true);
        this.setBackground(Color.black);
        this.profondeur = prof;
        addWindowListener(new WindowHandler());  // pour fermer
        setTitle("Exo2");
    }

    private class WindowHandler extends WindowAdapter
    {
        public void windowClosing (WindowEvent e)
        {
            System.exit(0);
        }
    }

    public void paint (Graphics g)
    {
        int frameHeight = getSize().height; // taille du frame, cette fois avec
                                            // lesbvordures
        int frameWidth = getSize().width;
        int h = frameHeight - 50;  // pour que Ck tienne dans
        int w = frameWidth - 50;  // le frame
        int rootX = frameWidth / 2; // recherche du centre
        int rootY = frameHeight / 2;   //
        g.setColor(Color.yellow);  // La couleur avec laquelle on va dessiner

        drawHk(w / 4, 3 * h / 4, profondeur, frameHeight / 4, 1, g);
    }

    /**
     * Fonction drawHk : Dessine Hk de manière récursive
     * @param x1 Abscisse du point de l'extrémité
     * @param y1 Ordonnée du point de l'extrémité
     * @param k  Profondeur de récurrence
     * @param l  Longueur du carré
     * @param or Orientation du U
     * @param g  Zone graphique
     */
    public abstract void drawHk (int x1, int y1, int k, int l, int or,
                                 Graphics g);
}
